package com.wang.handler;

import com.wang.exception.AgeException;
import com.wang.exception.NameException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * @ControllerAdvice
 * 控制器增强,
 * 也就是给控制器类增加功能,异常处理的功能
 *         //处理NameException异常
 *         //1.需要处理异常记录,记录到数据库,日志,记录日志发生的时间,哪个方法发生的,异常错误内容
 *         //2.发送通知,把异常的信息通过邮件,短信,微信,发送给相关人员
 *         //3.给用户友好的提示(这里先只实现这个3)
 */
@ControllerAdvice
public class GlobalExceptionHandler {
    //形参是exception表示controller抛出的异常对象,
    @ExceptionHandler(value = NameException.class)
    public ModelAndView doNameException(Exception ex){
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","姓名必须是中文且在二到四个字");
        mv.addObject("ex",ex);
        mv.setViewName("nameError");
        return mv;
    }
    @ExceptionHandler(value = AgeException.class)
    public ModelAndView doAgeException(Exception ex){
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","年龄不能为空or不能大于80");
        mv.addObject("ex",ex);
        mv.setViewName("ageError");
        return mv;
    }
}
